"""

@name:homework
@author:weihong
@projectname:haizeiwang
"""
# Python解释器是做什么用的？常用的Python解释器有哪些
# python解释器是在执行源程序时, 将源程序一条一条的解释成机器语言给计算机来执行
# 常用的python解释器有：
# Cpython 、 Ipython 、 Jpython 、 IronPython 、 PyPy


# # 从键盘接收用户的输入信息，赋值给name和interst
# name = input("请输入你的名字：")
# interest = input("请输入你的兴趣爱好：")
# # 将信息标准输出到屏幕上
# print("hello!")
# print(f"My name is {name}")
# print(f"I like {interest}")

# # 定义变量r为圆的半径，从键盘接收r的值，并将r转换为整型
# r = int(input("请输入圆的半径："))
# # 定义变量π为圆周率，并赋值为3.14
# π = 3.14
# # 定义变量s为面积
# s = π*r*r
# # 定义变量l为周长
# l = 2*π*r
# print(f"圆的面积为{s}")
# print(f"圆的周长为{l}")

import getpass
import time
print("{0:^20}".format('用户登录界面'))
for i in range(3):
    username = input("请输入您的用户名：")
    print("为避免您的密码泄露，您输入的密码将不会显示在屏幕上")
    passwd = getpass.getpass("请输入您的密码：")
    if passwd.isdigit() and i<2:
        print(f"登录失败：您的密码全为数字，安全性过低，您还有{2-i}次机会，请重新登录！\n")
    elif passwd.isdigit() and i==2:
        print("很抱歉，登陆失败，三次机会已用完")
    elif passwd.isalnum():
        for i in range(15):
            print(">",end='',flush=True)
            time.sleep(0.1)
        print("\n恭喜您！登录成功！")
        break


# 了解什么是版本控制及为什么要使用版本控制工具
# 版本控制工具的作用:帮助我们记录和跟踪项目中各文件内容的修改变化。
# 记录文件修改的手工做法:复制文件以备份,在备份的文件名中添加上日期和时间。
# 需要版本控制工具的原因:为了提高效率,我们希望这类操作是自动进行的,这是我们需要版本控制工具的原因。

# 什么是分支，为什么要使用分支
# 在git中分支只是一个指向单个commit的指针
# 比如我们开发完了一个app上线了,接下那就是迭代功能开发了,如果上线的app出现了一个严重的bug,
# 要你放下手头新功能的开发去解决这个bug,然后在发布一个新版本,如果你要是就在你要迭代功能的项
# 目上进行修改发布的话,那肯定是不行的,且先不谈有没有新的bug出现,时间是也是不允许的,发布的前
# 提还要把新功能完善好才行,要是删掉新功能的代码也不怎么现实,要是业务逻辑少一点还好说,要是多
# 的话那还真是有点无从下手了,所以git的分支就很好的解决了这个问题; 比如:master就是我们的
# 主代码,一直优化,到v1.4版本发布了,然后接着往下开发v2.0,v2.1版本,但是v1.4版本出现了一个
# 严重的bug,这时候我们就在这个v1.4版本创建一个分支developer来对bug进行修复,到了v1.6版本
# bug修复好发布出去,然后在跟原来的master主代码进行合并一下把代码添加到v2.1版本就OK了,剩下
# 就接着迭代开发了;


# 如果你的文件遇到冲突了怎么办？
# 1、先将本地修改存储起来
# $ git stash
# 这样本地的所有修改就都被暂时存储起来 。是用git stash list可以看到保存的信息：
# 其中stash@{0}就是刚才保存的标记。
# 2、pull内容
# 暂存了本地修改之后，就可以pull了。
# $ git pull
# 3、还原暂存的内容
# $ git stash pop stash@{0}
# 系统提示如下类似的信息：
# Auto-merging c/environ.c
# CONFLICT (content): Merge conflict in c/environ.c
# 意思就是系统自动合并修改的内容，但是其中有冲突，需要解决其中的冲突。
# 4、解决文件中冲突的的部分
# 打开冲突的文件（vim）
# 其中Updated upstream 和=====之间的内容就是pull下来的内容，====和stashed changes之间的内容就是本地修改的内容。
# 碰到这种情况，git也不知道哪行内容是需要的，所以要自行确定需要的内容。
# 解决完成之后，就可以正常的提交了。